home *** CD-ROM | disk | FTP | other *** search
Wrap
SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) NNNNAAAAMMMMEEEE SSSSTTTTRRRRMMMMVVVV, DDDDTTTTRRRRMMMMVVVV, CCCCTTTTRRRRMMMMVVVV, ZZZZTTTTRRRRMMMMVVVV - Multiplies a real or complex vector by a real or complex triangular matrix SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS Single precision Fortran: CCCCAAAALLLLLLLL SSSSTTTTRRRRMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ssssttttrrrrmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, ffffllllooooaaaatttt *_a,,,, iiiinnnntttt _l_d_a,,,, ffffllllooooaaaatttt *_x,,,, iiiinnnntttt _i_n_c_x))));;;; Double precision Fortran: CCCCAAAALLLLLLLL DDDDTTTTRRRRMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ddddttttrrrrmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, ddddoooouuuubbbblllleeee *_a,,,, iiiinnnntttt _l_d_a,,,, ddddoooouuuubbbblllleeee *_x,,,, iiiinnnntttt _i_n_c_x))));;;; Single precision complex Fortran: CCCCAAAALLLLLLLL CCCCTTTTRRRRMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ccccttttrrrrmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ccccttttrrrrmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_x,,,, iiiinnnntttt _i_n_c_x))));;;; Double precision complex Fortran: CCCCAAAALLLLLLLL ZZZZTTTTRRRRMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzttttrrrrmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x))));;;; PPPPaaaaggggeeee 1111 SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzttttrrrrmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_x,,,, iiiinnnntttt _i_n_c_x))));;;; IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN These routines are part of the SCSL Scientific Library and can be loaded using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option. The ----llllssssccccssss____mmmmpppp option directs the linker to use the multi-processor version of the library. When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is 4 bytes (32 bits). Another version of SCSL is available in which integers are 8 bytes (64 bits). This version allows the user access to larger memory sizes and helps when porting legacy Cray codes. It can be loaded by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use only one of the two versions; 4-byte integer and 8-byte integer library calls cannot be mixed. The C and C++ prototypes shown above are appropriate for the 4-byte integer version of SCSL. When using the 8-byte integer version, the variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header file should be included. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN SSSSTTTTRRRRMMMMVVVV and DDDDTTTTRRRRMMMMVVVV multiply a real vector by a real triangular matrix. CCCCTTTTRRRRMMMMVVVV and ZZZZTTTTRRRRMMMMVVVV multiply a complex vector by a complex triangular matrix. These routines perform one of the following matrix-vector operations: _x <- _A_x _x <- _A_T_x _x <- _A_H_x (CCCCTTTTRRRRMMMMVVVV, ZZZZTTTTRRRRMMMMVVVV only) where _A_T is the transpose of _A, _A_H is the conjugate transpose of _A, _x is an _n-element vector, and _A may be either a unit or nonunit _n-by-_n upper or lower triangular matrix. See the NOTES section of this man page for information about the interpretation of the data types described in the following arguments. These routines have the following arguments: _u_p_l_o Character. (input) Specifies whether the matrix is upper or lower triangular, as follows: PPPPaaaaggggeeee 2222 SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) _u_p_l_o = 'U' or 'u': _A is an upper triangular matrix. _u_p_l_o = 'L' or 'l': _A is a lower triangular matrix. For C/C++, a pointer to this character is passed. _t_r_a_n_s Character. (input) Specifies the operation to be performed, as follows: _t_r_a_n_s = 'N' or 'n': _x <- _A_x _t_r_a_n_s = 'T' or 't': _x <- _A_T_x _t_r_a_n_s = 'C' or 'c': _x <- _A_T_x (SSSSTTTTRRRRMMMMVVVV, DDDDTTTTRRRRMMMMVVVV), or _x <- _A_H_x (CCCCTTTTRRRRMMMMVVVV, ZZZZTTTTRRRRMMMMVVVV) For C/C++, a pointer to this character is passed. _d_i_a_g Character. (input) Specifies whether _A is unit triangular, as follows: _d_i_a_g = 'U' or 'u': _A is assumed to be unit triangular. _d_i_a_g = 'N' or 'n': _A is not assumed to be unit triangular. For C/C++, a pointer to this character is passed. _n Integer. (input) Specifies the order of matrix _A. _n >= 0. _a Array of dimension (_l_d_a,_n). (input) SSSSTTTTRRRRMMMMVVVV: Single precision array. DDDDTTTTRRRRMMMMVVVV: Double precision array. CCCCTTTTRRRRMMMMVVVV: Single precision complex array. ZZZZTTTTRRRRMMMMVVVV: Double precision complex array. Before entry with _u_p_l_o = 'U' or 'u', the leading _n-by-_n upper triangular part of array _a must contain the upper triangular matrix. The strictly lower triangular part of _a is not referenced. Before entry with _u_p_l_o = 'L' or 'l', the leading _n-by-_n lower triangular part of array _a must contain the lower triangular matrix. The strictly upper triangular part of _a is not referenced. When _d_i_a_g = 'U' or 'u', these routines assume that all elements of array _a that represent diagonal elements of matrix _A are 1. In this case, neither of these routines will reference any of the diagonal elements. _l_d_a Integer. (input) Specifies the first dimension of _a as declared in the calling program. _l_d_a must be at least MMMMAAAAXXXX(1,_n). PPPPaaaaggggeeee 3333 SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) _x Array of dimension 1+(_n-1) * |_i_n_c_x|. (input and output) SSSSTTTTRRRRMMMMVVVV: Single precision array. DDDDTTTTRRRRMMMMVVVV: Double precision array. CCCCTTTTRRRRMMMMVVVV: Single precision complex array. ZZZZTTTTRRRRMMMMVVVV: Double precision complex array. Contains the vector _x. On exit, the transformed vector overwrites array _x. _i_n_c_x Integer. (input) Specifies the increment for the elements of _x. _i_n_c_x must not be 0. NNNNOOOOTTTTEEEESSSS These routines are Level 2 Basic Linear Algebra Subprograms (Level 2 BLAS). When working backward (_i_n_c_x < 0), each routine starts at the end of the vector and moves backward, as follows: _x(1-_i_n_c_x * (_n-1)), _x(1-_i_n_c_x * (_n-2)), ..., _x(1) DDDDaaaattttaaaa TTTTyyyyppppeeeessss The following data types are described in this documentation: TTTTeeeerrrrmmmm UUUUsssseeeedddd DDDDaaaattttaaaa ttttyyyyppppeeee Fortran: Array dimensioned _n xxxx((((nnnn)))) Array of dimensions (_m,_n) xxxx((((mmmm,,,,nnnn)))) Character CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR Integer IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision RRRREEEEAAAALLLL Double precision DDDDOOOOUUUUBBBBLLLLEEEE PPPPRRRREEEECCCCIIIISSSSIIIIOOOONNNN Single precision complex CCCCOOOOMMMMPPPPLLLLEEEEXXXX Double precision complex DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX C/C++: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] PPPPaaaaggggeeee 4444 SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) SSSSTTTTRRRRMMMMVVVV((((3333SSSS)))) Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ssssccccssssllll____ccccoooommmmpppplllleeeexxxx Double precision complex ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx C++ STL: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> Double precision complex ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> Note that you can explicitly declare multidimensional C/C++ arrays provided that the array dimensions are swapped with respect to the Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran). To avoid a compiler type mismatch error in C++ (or a compiler warning message in C), however, the array should be cast to a pointer of the appropriate type when passed as an argument to a SCSL routine. SSSSEEEEEEEE AAAALLLLSSSSOOOO IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS2222(3S) IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77 Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic Linear Algebra Subprograms Technical Forum. PPPPaaaaggggeeee 5555